home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / CodeWarrior Lite / Metrowerks C⁄C++ Lite / Headers / Universal Headers 2.0.1f / Terminals.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-22  |  15.3 KB  |  380 lines  |  [TEXT/MMCC]

  1. /*
  2.      File:        Terminals.h
  3.  
  4.      Contains:    Communications Toolbox Terminal tool Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. */
  19.  
  20. #ifndef __TERMINALS__
  21. #define __TERMINALS__
  22.  
  23.  
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. /*    #include <Errors.h>                                            */
  28. /*        #include <ConditionalMacros.h>                            */
  29. /*    #include <Memory.h>                                            */
  30. /*        #include <Types.h>                                        */
  31. /*        #include <MixedMode.h>                                    */
  32. /*    #include <Windows.h>                                        */
  33. /*        #include <Quickdraw.h>                                    */
  34. /*            #include <QuickdrawText.h>                            */
  35. /*        #include <Events.h>                                        */
  36. /*            #include <OSUtils.h>                                */
  37. /*        #include <Controls.h>                                    */
  38. /*            #include <Menus.h>                                    */
  39. /*    #include <TextEdit.h>                                        */
  40.  
  41. #ifndef __CTBUTILITIES__
  42. #include <CTBUtilities.h>
  43. #endif
  44. /*    #include <StandardFile.h>                                    */
  45. /*        #include <Files.h>                                        */
  46. /*    #include <AppleTalk.h>                                        */
  47.  
  48. #ifndef __CONNECTIONS__
  49. #include <Connections.h>
  50. #endif
  51.  
  52. #ifdef __cplusplus
  53. extern "C" {
  54. #endif
  55.  
  56. #if PRAGMA_ALIGN_SUPPORTED
  57. #pragma options align=mac68k
  58. #endif
  59.  
  60. #if PRAGMA_IMPORT_SUPPORTED
  61. #pragma import on
  62. #endif
  63.  
  64.  
  65. enum {
  66. /* current Terminal Manager version     */
  67.     curTMVersion                = 2,
  68. /* current Terminal Manager Environment Record version     */
  69.     curTermEnvRecVers            = 0,
  70. /* error codes    */
  71.     tmGenericError                = -1,
  72.     tmNoErr                        = 0,
  73.     tmNotSent                    = 1,
  74.     tmEnvironsChanged            = 2,
  75.     tmNotSupported                = 7,
  76.     tmNoTools                    = 8
  77. };
  78.  
  79. typedef OSErr TMErr;
  80.  
  81.  
  82. enum {
  83.     tmInvisible                    = 1 << 0,
  84.     tmSaveBeforeClear            = 1 << 1,
  85.     tmNoMenus                    = 1 << 2,
  86.     tmAutoScroll                = 1 << 3,
  87.     tmConfigChanged                = 1 << 4
  88. };
  89.  
  90. typedef unsigned long TMFlags;
  91.  
  92.  
  93. enum {
  94.     selTextNormal                = 1 << 0,
  95.     selTextBoxed                = 1 << 1,
  96.     selGraphicsMarquee            = 1 << 2,
  97.     selGraphicsLasso            = 1 << 3,
  98.     tmSearchNoDiacrit            = 1 << 8,
  99.     tmSearchNoCase                = 1 << 9
  100. };
  101.  
  102. typedef unsigned short TMSearchTypes;
  103.  
  104. typedef short TMSelTypes;
  105.  
  106.  
  107. enum {
  108.     cursorText                    = 1,
  109.     cursorGraphics                = 2
  110. };
  111.  
  112. typedef unsigned short TMCursorTypes;
  113.  
  114.  
  115. enum {
  116.     tmTextTerminal                = 1 << 0,
  117.     tmGraphicsTerminal            = 1 << 1
  118. };
  119.  
  120. typedef unsigned short TMTermTypes;
  121.  
  122. struct TermDataBlock {
  123.     TMTermTypes                        flags;
  124.     Handle                            theData;
  125.     Handle                            auxData;
  126.     long                            reserved;
  127. };
  128. typedef struct TermDataBlock TermDataBlock;
  129.  
  130. typedef TermDataBlock *TermDataBlockPtr, **TermDataBlockH, **TermDataBlockHandle;
  131.  
  132. struct TermEnvironRec {
  133.     short                            version;
  134.     TMTermTypes                        termType;
  135.     short                            textRows;
  136.     short                            textCols;
  137.     Point                            cellSize;
  138.     Rect                            graphicSize;
  139.     Point                            slop;
  140.     Rect                            auxSpace;
  141. };
  142. typedef struct TermEnvironRec TermEnvironRec;
  143.  
  144. typedef TermEnvironRec *TermEnvironPtr;
  145.  
  146. union TMSelection {
  147.     Rect                            selRect;
  148.     RgnHandle                        selRgnHandle;
  149. };
  150. typedef union TMSelection TMSelection;
  151.  
  152. typedef struct TermRecord TermRecord, *TermPtr, **TermHandle;
  153.  
  154. typedef pascal long (*TerminalSendProcPtr)(Ptr thePtr, long theSize, long refCon, CMFlags flags);
  155. typedef pascal void (*TerminalBreakProcPtr)(long duration, long refCon);
  156. typedef pascal long (*TerminalCacheProcPtr)(long refCon, TermDataBlockPtr theTermData);
  157. typedef pascal void (*TerminalSearchCallBackProcPtr)(TermHandle hTerm, short refNum, Rect *foundRect);
  158. typedef pascal Boolean (*TerminalClikLoopProcPtr)(long refCon);
  159. typedef pascal CMErr (*TerminalEnvironsProcPtr)(long refCon, TermEnvironRec *theEnvirons);
  160. typedef pascal void (*TerminalChooseIdleProcPtr)(void);
  161. typedef pascal long (*TerminalToolDefProcPtr)(TermHandle hTerm, short msg, long p1, long p2, long p3);
  162.  
  163. #if GENERATINGCFM
  164. typedef UniversalProcPtr TerminalSendUPP;
  165. typedef UniversalProcPtr TerminalBreakUPP;
  166. typedef UniversalProcPtr TerminalCacheUPP;
  167. typedef UniversalProcPtr TerminalSearchCallBackUPP;
  168. typedef UniversalProcPtr TerminalClikLoopUPP;
  169. typedef UniversalProcPtr TerminalEnvironsUPP;
  170. typedef UniversalProcPtr TerminalChooseIdleUPP;
  171. typedef UniversalProcPtr TerminalToolDefUPP;
  172. #else
  173. typedef TerminalSendProcPtr TerminalSendUPP;
  174. typedef TerminalBreakProcPtr TerminalBreakUPP;
  175. typedef TerminalCacheProcPtr TerminalCacheUPP;
  176. typedef TerminalSearchCallBackProcPtr TerminalSearchCallBackUPP;
  177. typedef TerminalClikLoopProcPtr TerminalClikLoopUPP;
  178. typedef TerminalEnvironsProcPtr TerminalEnvironsUPP;
  179. typedef TerminalChooseIdleProcPtr TerminalChooseIdleUPP;
  180. typedef TerminalToolDefProcPtr TerminalToolDefUPP;
  181. #endif
  182.  
  183. struct TermRecord {
  184.     short                            procID;
  185.     TMFlags                            flags;
  186.     TMErr                            errCode;
  187.     long                            refCon;
  188.     long                            userData;
  189.     TerminalToolDefUPP                defProc;
  190.     Ptr                                config;
  191.     Ptr                                oldConfig;
  192.     TerminalEnvironsUPP                environsProc;
  193.     long                            reserved1;
  194.     long                            reserved2;
  195.     Ptr                                tmPrivate;
  196.     TerminalSendUPP                    sendProc;
  197.     TerminalBreakUPP                breakProc;
  198.     TerminalCacheUPP                cacheProc;
  199.     TerminalClikLoopUPP                clikLoop;
  200.     WindowPtr                        owner;
  201.     Rect                            termRect;
  202.     Rect                            viewRect;
  203.     Rect                            visRect;
  204.     long                            lastIdle;
  205.     TMSelection                        selection;
  206.     TMSelTypes                        selType;
  207.     long                            mluField;
  208. };
  209. enum {
  210.     uppTerminalSendProcInfo = kPascalStackBased
  211.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  212.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  213.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  214.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  215.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(CMFlags))),
  216.     uppTerminalBreakProcInfo = kPascalStackBased
  217.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  218.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))),
  219.     uppTerminalCacheProcInfo = kPascalStackBased
  220.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  221.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  222.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TermDataBlockPtr))),
  223.     uppTerminalSearchCallBackProcInfo = kPascalStackBased
  224.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TermHandle)))
  225.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  226.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))),
  227.     uppTerminalClikLoopProcInfo = kPascalStackBased
  228.          | RESULT_SIZE(SIZE_CODE(sizeof(Boolean)))
  229.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long))),
  230.     uppTerminalEnvironsProcInfo = kPascalStackBased
  231.          | RESULT_SIZE(SIZE_CODE(sizeof(CMErr)))
  232.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(long)))
  233.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(TermEnvironRec*))),
  234.     uppTerminalChooseIdleProcInfo = kPascalStackBased,
  235.     uppTerminalToolDefProcInfo = kPascalStackBased
  236.          | RESULT_SIZE(SIZE_CODE(sizeof(long)))
  237.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(TermHandle)))
  238.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  239.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  240.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(long)))
  241.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(long)))
  242. };
  243.  
  244. #if GENERATINGCFM
  245. #define NewTerminalSendProc(userRoutine)        \
  246.         (TerminalSendUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalSendProcInfo, GetCurrentArchitecture())
  247. #define NewTerminalBreakProc(userRoutine)        \
  248.         (TerminalBreakUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalBreakProcInfo, GetCurrentArchitecture())
  249. #define NewTerminalCacheProc(userRoutine)        \
  250.         (TerminalCacheUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalCacheProcInfo, GetCurrentArchitecture())
  251. #define NewTerminalSearchCallBackProc(userRoutine)        \
  252.         (TerminalSearchCallBackUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalSearchCallBackProcInfo, GetCurrentArchitecture())
  253. #define NewTerminalClikLoopProc(userRoutine)        \
  254.         (TerminalClikLoopUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalClikLoopProcInfo, GetCurrentArchitecture())
  255. #define NewTerminalEnvironsProc(userRoutine)        \
  256.         (TerminalEnvironsUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalEnvironsProcInfo, GetCurrentArchitecture())
  257. #define NewTerminalChooseIdleProc(userRoutine)        \
  258.         (TerminalChooseIdleUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalChooseIdleProcInfo, GetCurrentArchitecture())
  259. #define NewTerminalToolDefProc(userRoutine)        \
  260.         (TerminalToolDefUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppTerminalToolDefProcInfo, GetCurrentArchitecture())
  261. #else
  262. #define NewTerminalSendProc(userRoutine)        \
  263.         ((TerminalSendUPP) (userRoutine))
  264. #define NewTerminalBreakProc(userRoutine)        \
  265.         ((TerminalBreakUPP) (userRoutine))
  266. #define NewTerminalCacheProc(userRoutine)        \
  267.         ((TerminalCacheUPP) (userRoutine))
  268. #define NewTerminalSearchCallBackProc(userRoutine)        \
  269.         ((TerminalSearchCallBackUPP) (userRoutine))
  270. #define NewTerminalClikLoopProc(userRoutine)        \
  271.         ((TerminalClikLoopUPP) (userRoutine))
  272. #define NewTerminalEnvironsProc(userRoutine)        \
  273.         ((TerminalEnvironsUPP) (userRoutine))
  274. #define NewTerminalChooseIdleProc(userRoutine)        \
  275.         ((TerminalChooseIdleUPP) (userRoutine))
  276. #define NewTerminalToolDefProc(userRoutine)        \
  277.         ((TerminalToolDefUPP) (userRoutine))
  278. #endif
  279.  
  280. #if GENERATINGCFM
  281. #define CallTerminalSendProc(userRoutine, thePtr, theSize, refCon, flags)        \
  282.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalSendProcInfo, (thePtr), (theSize), (refCon), (flags))
  283. #define CallTerminalBreakProc(userRoutine, duration, refCon)        \
  284.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalBreakProcInfo, (duration), (refCon))
  285. #define CallTerminalCacheProc(userRoutine, refCon, theTermData)        \
  286.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalCacheProcInfo, (refCon), (theTermData))
  287. #define CallTerminalSearchCallBackProc(userRoutine, hTerm, refNum, foundRect)        \
  288.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalSearchCallBackProcInfo, (hTerm), (refNum), (foundRect))
  289. #define CallTerminalClikLoopProc(userRoutine, refCon)        \
  290.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalClikLoopProcInfo, (refCon))
  291. #define CallTerminalEnvironsProc(userRoutine, refCon, theEnvirons)        \
  292.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalEnvironsProcInfo, (refCon), (theEnvirons))
  293. #define CallTerminalChooseIdleProc(userRoutine)        \
  294.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalChooseIdleProcInfo)
  295. #define CallTerminalToolDefProc(userRoutine, hTerm, msg, p1, p2, p3)        \
  296.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppTerminalToolDefProcInfo, (hTerm), (msg), (p1), (p2), (p3))
  297. #else
  298. #define CallTerminalSendProc(userRoutine, thePtr, theSize, refCon, flags)        \
  299.         (*(userRoutine))((thePtr), (theSize), (refCon), (flags))
  300. #define CallTerminalBreakProc(userRoutine, duration, refCon)        \
  301.         (*(userRoutine))((duration), (refCon))
  302. #define CallTerminalCacheProc(userRoutine, refCon, theTermData)        \
  303.         (*(userRoutine))((refCon), (theTermData))
  304. #define CallTerminalSearchCallBackProc(userRoutine, hTerm, refNum, foundRect)        \
  305.         (*(userRoutine))((hTerm), (refNum), (foundRect))
  306. #define CallTerminalClikLoopProc(userRoutine, refCon)        \
  307.         (*(userRoutine))((refCon))
  308. #define CallTerminalEnvironsProc(userRoutine, refCon, theEnvirons)        \
  309.         (*(userRoutine))((refCon), (theEnvirons))
  310. #define CallTerminalChooseIdleProc(userRoutine)        \
  311.         (*(userRoutine))()
  312. #define CallTerminalToolDefProc(userRoutine, hTerm, msg, p1, p2, p3)        \
  313.         (*(userRoutine))((hTerm), (msg), (p1), (p2), (p3))
  314. #endif
  315.  
  316. extern pascal TMErr InitTM(void);
  317. extern pascal Handle TMGetVersion(TermHandle hTerm);
  318. extern pascal short TMGetTMVersion(void);
  319. extern pascal TermHandle TMNew(const Rect *termRect, const Rect *viewRect, TMFlags flags, short procID, WindowPtr owner, TerminalSendUPP sendProc, TerminalCacheUPP cacheProc, TerminalBreakUPP breakProc, TerminalClikLoopUPP clikLoop, TerminalEnvironsUPP environsProc, long refCon, long userData);
  320. extern pascal void TMDispose(TermHandle hTerm);
  321. extern pascal void TMKey(TermHandle hTerm, const EventRecord *theEvent);
  322. extern pascal void TMUpdate(TermHandle hTerm, RgnHandle visRgn);
  323. extern pascal void TMPaint(TermHandle hTerm, const TermDataBlock *theTermData, const Rect *theRect);
  324. extern pascal void TMActivate(TermHandle hTerm, Boolean activate);
  325. extern pascal void TMResume(TermHandle hTerm, Boolean resume);
  326. extern pascal void TMClick(TermHandle hTerm, const EventRecord *theEvent);
  327. extern pascal void TMIdle(TermHandle hTerm);
  328. extern pascal long TMStream(TermHandle hTerm, void *theBuffer, long theLength, CMFlags flags);
  329. extern pascal Boolean TMMenu(TermHandle hTerm, short menuID, short item);
  330. extern pascal void TMReset(TermHandle hTerm);
  331. extern pascal void TMClear(TermHandle hTerm);
  332. extern pascal void TMResize(TermHandle hTerm, const Rect *newViewRect);
  333. extern pascal long TMGetSelect(TermHandle hTerm, Handle theData, ResType *theType);
  334. extern pascal void TMGetLine(TermHandle hTerm, short lineNo, TermDataBlock *theTermData);
  335. extern pascal void TMSetSelection(TermHandle hTerm, const TMSelection *theSelection, TMSelTypes selType);
  336. extern pascal void TMScroll(TermHandle hTerm, short dh, short dv);
  337. extern pascal Boolean TMValidate(TermHandle hTerm);
  338. extern pascal void TMDefault(Ptr *theConfig, short procID, Boolean allocate);
  339. extern pascal Handle TMSetupPreflight(short procID, long *magicCookie);
  340. extern pascal void TMSetupSetup(short procID, const void *theConfig, short count, DialogPtr theDialog, long *magicCookie);
  341. extern pascal Boolean TMSetupFilter(short procID, const void *theConfig, short count, DialogPtr theDialog, EventRecord *theEvent, short *theItem, long *magicCookie);
  342. extern pascal void TMSetupItem(short procID, const void *theConfig, short count, DialogPtr theDialog, short *theItem, long *magicCookie);
  343. extern pascal void TMSetupXCleanup(short procID, const void *theConfig, short count, DialogPtr theDialog, Boolean OKed, long *magicCookie);
  344. extern pascal void TMSetupPostflight(short procID);
  345. extern pascal Ptr TMGetConfig(TermHandle hTerm);
  346. extern pascal short TMSetConfig(TermHandle hTerm, const void *thePtr);
  347. extern pascal OSErr TMIntlToEnglish(TermHandle hTerm, const void *inputPtr, Ptr *outputPtr, short language);
  348. extern pascal OSErr TMEnglishToIntl(TermHandle hTerm, const void *inputPtr, Ptr *outputPtr, short language);
  349. extern pascal void TMGetToolName(short id, Str255 name);
  350. extern pascal short TMGetProcID(ConstStr255Param name);
  351. extern pascal void TMSetRefCon(TermHandle hTerm, long refCon);
  352. extern pascal long TMGetRefCon(TermHandle hTerm);
  353. extern pascal void TMSetUserData(TermHandle hTerm, long userData);
  354. extern pascal long TMGetUserData(TermHandle hTerm);
  355. extern pascal short TMAddSearch(TermHandle hTerm, ConstStr255Param theString, const Rect *where, TMSearchTypes searchType, TerminalSearchCallBackUPP callBack);
  356. extern pascal void TMRemoveSearch(TermHandle hTerm, short refnum);
  357. extern pascal void TMClearSearch(TermHandle hTerm);
  358. extern pascal Point TMGetCursor(TermHandle hTerm, TMCursorTypes cursType);
  359. extern pascal TMErr TMGetTermEnvirons(TermHandle hTerm, TermEnvironRec *theEnvirons);
  360. extern pascal short TMChoose(TermHandle *hTerm, Point where, TerminalChooseIdleUPP idleProc);
  361. extern pascal void TMEvent(TermHandle hTerm, const EventRecord *theEvent);
  362. extern pascal Boolean TMDoTermKey(TermHandle hTerm, ConstStr255Param theKey);
  363. extern pascal short TMCountTermKeys(TermHandle hTerm);
  364. extern pascal void TMGetIndTermKey(TermHandle hTerm, short id, Str255 theKey);
  365. extern pascal void TMGetErrorString(TermHandle hTerm, short id, Str255 errMsg);
  366.  
  367. #if PRAGMA_IMPORT_SUPPORTED
  368. #pragma import off
  369. #endif
  370.  
  371. #if PRAGMA_ALIGN_SUPPORTED
  372. #pragma options align=reset
  373. #endif
  374.  
  375. #ifdef __cplusplus
  376. }
  377. #endif
  378.  
  379. #endif /* __TERMINALS__ */
  380.